/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ept.controller;

import com.ept.entities.Commandeclient;
import com.ept.entities.Produit;
import com.ept.entities.Utilisateur;
import com.ept.facade.CommandeclientFacade;
import com.ept.facade.ProduitFacade;
import com.ept.facade.UtilisateurFacade;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.ChartSeries;
import org.primefaces.model.chart.PieChartModel;

/**
 *
 * @author Khalil
 */
@ManagedBean ( name="produitStatistiqueController" )
@RequestScoped
public class ProduitStatistiqueController implements Serializble, ActionListener{

    /**
     * Creates a new instance of ProduitStatistiqueController
     */
    private CartesianChartModel categoryModel;
    private PieChartModel pieModel; 
    @EJB
    private CommandeclientFacade commandeclientFacade;

   
    
    @EJB
    private UtilisateurFacade utilisateurFacade;
    @EJB
    private ProduitFacade produitFacade;
    
    private List<Produit> list;
    private List<Utilisateur> list1;
     List<Commandeclient> list2;

    public List<Commandeclient> getList2() {
        return list2;
    }

    public void setList2(List<Commandeclient> list2) {
        this.list2 = list2;
    }

    public List<Utilisateur> getList1() {
        return list1;
    }

    public void setList1(List<Utilisateur> list1) {
        this.list1 = list1;
    }
    
    public CartesianChartModel getCategoryModel() {  
        return categoryModel;  
    } 

    public List<Produit> getList() {
        return list;
    }

    public void setList(List<Produit> list) {
        this.list = list;
    }
    
    public ProduitStatistiqueController() {
    }
    
    public PieChartModel getPieModel() {  
        return pieModel;  
    }  
    @PostConstruct   
    private void createPieModel() {  
        pieModel = new PieChartModel();  
        int quantiteVendu=0;
        String nomProduit="";
        list = produitFacade.findAll();
        for (Produit current : list) {
             quantiteVendu=0;
            quantiteVendu=current.getQuantiteInitiale()-current.getQuantiteDisponible();
            nomProduit=current.getNomProduit();
          pieModel.set(nomProduit,quantiteVendu);   
            
        }
        
         categoryModel = new CartesianChartModel();  
        list1= utilisateurFacade.findAll();
        ChartSeries client = new ChartSeries();
        for(Utilisateur current:list1){
         
         client.setLabel("Somme");
         list2 = commandeclientFacade.findAchats(current.getPanier());
         int total=0;
         for(Commandeclient current2:list2){
          total=total+current2.getPrix()*current2.getQuantite();
         }
          client.set(current.getPrenom(),total);
            System.out.println(current.getPrenom());
            System.out.println(total);
          
        }
         categoryModel.addSeries(client); 
        
        
         } 
    
//    @PostConstruct 
//    private void createCategoryModel() {  
//        categoryModel = new CartesianChartModel();  
//        list1= utilisateurFacade.findAll();
//        ChartSeries client = new ChartSeries();
//        for(Utilisateur current:list1){
//         
//         client.setLabel("Somme");
//         list2 = commandeclientFacade.findAchat(current.getPanier());
//         int total=0;
//         for(Commandeclient current2:list2){
//          total=total+current2.getPrix()*current2.getQuantite();
//         }
//          client.set(current.getPrenom(),total);
//            System.out.println(current.getPrenom());
//            System.out.println(total);
//          
//        }
//         categoryModel.addSeries(client); 
//          
//  
//
//    }  

    @Override
    public void processAction(ActionEvent event) throws AbortProcessingException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
